// url模块
// url模块用于处理解析url地址

// 加载模块
const http = require('http');
const url = require('url');

// 创建服务并监听请求事件
http.createServer((req,res)=>{
    console.log( 'hello...' );

    // 用户请求地址为：'http://localhost:3002/images/search?wd=tp&kw=abc&hehe=123#header'
    // 获取用户的请求路径
    // req.url 返回url地址中从端口号到哈希值之间的内容
    // console.log( req.url );// '/images/search?wd=tp&kw=abc&hehe=123'

    // url.resolve()用于拼接url地址
    let url1 = url.resolve('http://localhost:3002',req.url);
    // console.log( url1 );// 'http://localhost:3002/images/search?wd=tp&kw=abc&hehe=123'

    // url.parse()用于将url字符串解析为url对象
    // let url2 = url.parse(url1,false);// 第二个参数默认为false，表示query的值为字符串
    let url2 = url.parse(url1,true);// 第二个参数为true，表示query的值为对象
    // console.log( url2 );
    // url2 = {
    //     protocol: 'http:',
    //     slashes: true,
    //     auth: null,
    //     host: 'localhost:3002',
    //     port: '3002',
    //     hostname: 'localhost',
    //     hash: null,
    //     search: '?wd=tp&kw=abc&hehe=123',
    //     query: 'wd=tp&kw=abc&hehe=123',// false
    //     query: { wd: 'tp', kw: 'abc', hehe: '123' },// true
    //     pathname: '/images/search',
    //     path: '/images/search?wd=tp&kw=abc&hehe=123',// req.url
    //     href: 'http://localhost:3002/images/search?wd=tp&kw=abc&hehe=123'
    // }


    // 从nodejs11+开始，官方推荐使用URL类来处理解析url地址
    let url3 = new URL(req.url,'http://localhost:3002');
    console.log( url3 );
    // url3 = {
    //     href: 'http://localhost:3002/images/search?wd=tp&kw=abc&hehe=123',
    //     origin: 'http://localhost:3002',
    //     protocol: 'http:',
    //     username: '',
    //     password: '',
    //     host: 'localhost:3002',
    //     hostname: 'localhost',
    //     port: '3002',
    //     pathname: '/images/search',
    //     search: '?wd=tp&kw=abc&hehe=123',
    //     searchParams: URLSearchParams { 'wd' => 'tp', 'kw' => 'abc', 'hehe' => '123' },
    //     hash: ''
    // }
    console.log( url3.searchParams.get('kw') );// 'abc'

    // 响应请求
    res.end('hello nodejs');
})
// 监听端口号
.listen(3002,()=>{
    console.log( '------------server is ok-----------' );
})
